#include "junix.h"

class base {
		  public:
					 base():n(std::string("public n")),m(std::string("protected m")),k("private k") { }
					 std::string n;
		  protected:
					 std::string m;
		  private:
					 std::string k;
};

// protected inherited:
// base public and protected member became protected
// base::public    -->  inh::protected
// base::protected -->  inh::protected
// base::private   -->  can not see
class inh: protected virtual base {
	public:
		void print() const {
			std::cout<<base::n<<" "<<n<<std::endl;
			std::cout<<base::m<<" "<<m<<std::endl;
//			std::cout<<base::k<<" "<<k<<std::endl; 
		}
	private:
		//using base::n;
};

int main() {
		  inh myinh;
		  	std::cout<<myinh.n<<std::endl;
		  //		std::cout<<myinh.m<<std::endl;
		  //		std::cout<<myinh.k<<std::endl;
}
